﻿using System;

namespace InterfaceCylinderApp
{
    // (1) 定义接口A
    interface A
    {
        double Area();
    }

    // (2) 定义接口B
    interface B
    {
        void SetColor(string c);
    }

    // (3) 定义接口C（继承A和B）
    interface C : A, B
    {
        void Volume();
    }

    // (4) 定义圆柱体类Cylinder实现接口C
    class Cylinder : C
    {
        private double radius;
        private double height;
        private string color;

        public Cylinder(double radius, double height)
        {
            this.radius = radius;
            this.height = height;
            this.color = "未设置"; // 默认颜色
        }

        // 实现接口A的方法
        public double Area()
        {
            return Math.PI * radius * radius; // 底面积
        }

        // 实现接口B的方法
        public void SetColor(string c)
        {
            color = c;
        }

        // 实现接口C的方法
        public void Volume()
        {
            double vol = Area() * height; // 体积=底面积×高
            Console.WriteLine($"圆柱体体积：{vol:F2}，颜色：{color}");
        }

        // 辅助方法：显示所有信息
        public void DisplayInfo()
        {
            Console.WriteLine($"圆柱体信息：半径={radius}，高={height}，颜色={color}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // (5) 测试Cylinder类
            Cylinder cylinder = new Cylinder(3.0, 5.0);

            // 设置颜色
            cylinder.SetColor("红色");

            // 显示信息
            cylinder.DisplayInfo();

            // 计算并显示体积
            cylinder.Volume();

            // 通过接口A引用调用Area()
            A a = cylinder;
            Console.WriteLine($"通过接口A获取的面积：{a.Area():F2}");

            // 通过接口B引用设置新颜色
            B b = cylinder;
            b.SetColor("蓝色");

            // 通过接口C引用调用Volume()
            C c = cylinder;
            c.Volume();
        }
    }
}